package com.hilihili.service;

import java.util.List;
import java.util.Map;

import com.hilihili.domain.entity.Comment;
import com.hilihili.domain.dto.CommentLimitDTO;
import com.hilihili.domain.entity.CommentLikeUser;

/**
 * 评论Service接口
 *
 * @author xhc
 * @date 2023-11-15
 */
public interface ICommentService
{
    public Comment selectIdMax();

    public Long selectCommentCountByVideoId(Long videoId);
    public Long selectCommentCountByVideoIdAndOriginIdIsNull(Long videoId);

//    public List<Comment> selectCommentListByVideoId(Long videoId);
//
//
//    public List<Comment> selectCommentTop(Long videoId);
//
//    public List<Comment> selectCommentChildrenPage(CommentLimitDTO commentLimitDTO);
//
//    public Long selectCommentCountByOriginId(Long originId);

    public int deleteComment(Long id,Long OriginId);

//    public List<Comment> selectOneCommentByVideoId(Long videoId);
//    public List<Comment> selectParentCommentAlsoLove(CommentLimitDTO commentLimitDTO);
//    public List<Comment> selectParentCommentByDateAsc(CommentLimitDTO commentLimitDTO);
//    public List<Comment> selectParentCommentByDateAndLoveNull(CommentLimitDTO commentLimitDTO);

    public Map<String,Object> getCommentChildren(CommentLimitDTO commentLimitDTO);

    public int updateLike(CommentLikeUser commentLikeUser);

    public List<Comment> selectCommentByVideoIdAndMaxCount(CommentLimitDTO commentLimitDTO);
    public List<Comment> selectCommentByLatest(CommentLimitDTO commentLimitDTO);

//    ------------------------

    /**
     * 查询评论
     *
     * @param id 评论主键
     * @return 评论
     */
    public Comment selectCommentById(Long id);

    /**
     * 查询评论列表
     *
     * @param comment 评论
     * @return 评论集合
     */
    public List<Comment> selectCommentList(Comment comment);

    /**
     * 新增评论
     *
     * @param comment 评论
     * @return 结果
     */
    public int insertComment(Comment comment);

    /**
     * 修改评论
     *
     * @param comment 评论
     * @return 结果
     */
    public int updateComment(Comment comment);

    /**
     * 批量删除评论
     *
     * @param ids 需要删除的评论主键集合
     * @return 结果
     */
    public int deleteCommentByIds(Long[] ids);

    /**
     * 删除评论信息
     *
     * @param id 评论主键
     * @return 结果
     */
    public int deleteCommentById(Long id);
}
